﻿<?php

/** 
 * 微博操作类 
 * 
 * @version 1.0 
 */
abstract class WeiboClient {
	
	
	function __construct($accecss_token, $accecss_token_secret) {
		//		$this->oauth = new WeiboOAuth ( $akey, $skey, $accecss_token, $accecss_token_secret );
	}
	
	/** 
	 * 最新公共微博 
	 * 
	 * @access public 
	 * @return array 
	 */
	abstract function public_timeline() ;
	
	/** 
	 * 最新关注人微博 
	 * 
	 * @access public 
	 * @return array 
	 */
	abstract function friends_timeline() ;
	
	/** 
	 * 最新关注人微博 
	 * 
	 * @access public 
	 * @return array 
	 */
	abstract function home_timeline() ;
	
	/** 
	 * 最新 @用户的 
	 * 
	 * @access public 
	 * @param int $page 返回结果的页序号。 
	 * @param int $count 每次返回的最大记录数（即页面大小），不大于200，默认为20。 
	 * @return array 
	 */
	abstract function mentions($page = 1, $count = 20) ;
	
	/** 
	 * 发表微博 
	 * 
	 * @access public 
	 * @param mixed $text 要更新的微博信息。 
	 * @return array 
	 */
	abstract function update($text) ;
	
	/** 
	 * 发表图片微博 
	 * 
	 * @access public 
	 * @param string $text 要更新的微博信息。 
	 * @param string $text 要发布的图片路径,支持url。[只支持png/jpg/gif三种格式,增加格式请修改get_image_mime方法] 
	 * @return array 
	 */
	abstract function upload($text, $pic_path) ;
	
	/** 
	 * 获取单条微博 
	 * 
	 * @access public 
	 * @param mixed $sid 要获取已发表的微博ID 
	 * @return array 
	 */
	abstract function show_status($sid) ;
	
	/** 
	 * 删除微博 
	 * 
	 * @access public 
	 * @param mixed $sid 要删除的微博ID 
	 * @return array 
	 */
	abstract function delete($sid) ;
	
	/** 
	 * 删除微博 
	 * 
	 * @access public 
	 * @param mixed $sid 要删除的微博ID 
	 * @return array 
	 */
	abstract function destroy($sid) ;
	
	/** 
	 * 个人资料 
	 * 
	 * @access public 
	 * @param mixed $uid_or_name 用户UID或微博昵称。 
	 * @return array 
	 */
	abstract function show_user($uid_or_name = null) ;
	
	/** 
	 * 关注人列表 
	 * 
	 * @access public 
	 * @param bool $cursor 单页只能包含100个关注列表，为了获取更多则cursor默认从-1开始，通过增加或减少cursor来获取更多的关注列表 
	 * @param bool $count 每次返回的最大记录数（即页面大小），不大于200,默认返回20 
	 * @param mixed $uid_or_name 要获取的 UID或微博昵称 
	 * @return array 
	 */
	abstract function friends($cursor = false, $count = false, $uid_or_name = null) ;
	
	/** 
	 * 粉丝列表 
	 * 
	 * @access public 
	 * @param bool $cursor 单页只能包含100个粉丝列表，为了获取更多则cursor默认从-1开始，通过增加或减少cursor来获取更多的粉丝列表 
	 * @param bool $count 每次返回的最大记录数（即页面大小），不大于200,默认返回20。 
	 * @param mixed $uid_or_name  要获取的 UID或微博昵称 
	 * @return array 
	 */
	abstract function followers($cursor = false, $count = false, $uid_or_name = null) ;
	
	/** 
	 * 关注一个用户 
	 * 
	 * @access public 
	 * @param mixed $uid_or_name 要关注的用户UID或微博昵称 
	 * @return array 
	 */
	abstract function follow($uid_or_name) ;
	
	/** 
	 * 取消关注某用户 
	 * 
	 * @access public 
	 * @param mixed $uid_or_name 要取消关注的用户UID或微博昵称 
	 * @return array 
	 */
	abstract function unfollow($uid_or_name) ;
	
	/** 
	 * 返回两个用户关系的详细情况 
	 * 
	 * @access public 
	 * @param mixed $uid_or_name 要判断的用户UID 
	 * @return array 
	 */
	abstract function is_followed($uid_or_name) ;
	
	/** 
	 * 用户发表微博列表 
	 * 
	 * @access public 
	 * @param int $page 页码 
	 * @param int $count 每次返回的最大记录数，最多返回200条，默认20。 
	 * @param mixed $uid_or_name 指定用户UID或微博昵称 
	 * @return array 
	 */
	abstract function user_timeline($page = 1, $count = 20, $uid_or_name = null) ;
	
	/** 
	 * 获取私信列表 
	 * 
	 * @access public 
	 * @param int $page 页码 
	 * @param int $count 每次返回的最大记录数，最多返回200条，默认20。 
	 * @return array 
	 */
	abstract function list_dm($page = 1, $count = 20) ;
	
	/** 
	 * 发送的私信列表 
	 * 
	 * @access public 
	 * @param int $page 页码 
	 * @param int $count 每次返回的最大记录数，最多返回200条，默认20。 
	 * @return array 
	 */
	abstract function list_dm_sent($page = 1, $count = 20) ;
	
	/** 
	 * 发送私信 
	 * 
	 * @access public 
	 * @param mixed $uid_or_name UID或微博昵称 
	 * @param mixed $text 要发生的消息内容，文本大小必须小于300个汉字。 
	 * @return array 
	 */
	abstract function send_dm($uid_or_name, $text) ;
	
	/** 
	 * 删除一条私信 
	 * 
	 * @access public 
	 * @param mixed $did 要删除的私信主键ID 
	 * @return array 
	 */
	abstract function delete_dm($did) ;
	
	/** 
	 * 转发一条微博信息。 
	 * 
	 * @access public 
	 * @param mixed $sid 转发的微博ID 
	 * @param bool $text 添加的转发信息。 
	 * @return array 
	 */
	abstract function repost($sid, $text = false) ;
	
	/** 
	 * 对一条微博信息进行评论 
	 * 
	 * @access public 
	 * @param mixed $sid 要评论的微博id 
	 * @param mixed $text 评论内容 
	 * @param bool $cid 要评论的评论id 
	 * @return array 
	 */
	abstract function send_comment($sid, $text, $cid = false) ;
	
	/** 
	 * 发出的评论 
	 * 
	 * @access public 
	 * @param int $page 页码 
	 * @param int $count 每次返回的最大记录数，最多返回200条，默认20。 
	 * @return array 
	 */
	abstract function comments_by_me($page = 1, $count = 20) ;
	
	/** 
	 * 最新评论(按时间) 
	 * 
	 * @access public 
	 * @param int $page 页码 
	 * @param int $count 每次返回的最大记录数，最多返回200条，默认20。 
	 * @return array 
	 */
	abstract function comments_timeline($page = 1, $count = 20) ;
	
	/** 
	 * 单条评论列表(按微博) 
	 * 
	 * @access public 
	 * @param mixed $sid 指定的微博ID 
	 * @param int $page 页码 
	 * @param int $count 每次返回的最大记录数，最多返回200条，默认20。 
	 * @return array 
	 */
	abstract function get_comments_by_sid($sid, $page = 1, $count = 20) ;
	
	/** 
	 * 批量统计微博的评论数，转发数，一次请求最多获取100个。 
	 * 
	 * @access public 
	 * @param mixed $sids 微博ID号列表，用逗号隔开 
	 * @return array 
	 */
	abstract function get_count_info_by_ids($sids) ;
	
	/** 
	 * 对一条微博评论信息进行回复。 
	 * 
	 * @access public 
	 * @param mixed $sid 微博id 
	 * @param mixed $text 评论内容。 
	 * @param mixed $cid 评论id 
	 * @return array 
	 */
	abstract function reply($sid, $text, $cid) ;
	
	/** 
	 * 返回用户的发布的最近20条收藏信息，和用户收藏页面返回内容是一致的。 
	 * 
	 * @access public 
	 * @param bool $page 返回结果的页序号。 
	 * @return array 
	 */
	abstract function get_favorites($page = false) ;
	
	/** 
	 * 收藏一条微博信息 
	 * 
	 * @access public 
	 * @param mixed $sid 收藏的微博id 
	 * @return array 
	 */
	abstract function add_to_favorites($sid) ;
	
	/** 
	 * 删除微博收藏。 
	 * 
	 * @access public 
	 * @param mixed $sid 要删除的收藏微博信息ID. 
	 * @return array 
	 */
	abstract function remove_from_favorites($sid) ;
	
	abstract function verify_credentials() ;
	
	abstract function update_avatar($pic_path) ;
	
	// ========================================= 
	

	/** 
	 * @ignore 
	 */
	abstract protected function request_with_pager($url, $page = false, $count = false) ;
	
	/** 
	 * @ignore 
	 */
	abstract protected function request_with_uid($url, $uid_or_name, $page = false, $count = false, $cursor = false, $post = false) ;

}

?>